package com.fau.fm.service;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.apache.poi.ss.usermodel.Workbook;

import com.fau.fm.entity.MedicalAdmin;
import com.fau.fm.entity.MedicalFinancialClaim;
import com.fau.fm.entity.MedicalFinancialOrders;
import com.fau.fm.entity.MedicalOrderReconClaim;
import com.fau.fm.entity.MedicalOrdersInfo;
import com.fau.fm.entity.MedicalOrdersLog;
import com.fau.fm.entity.MedicalOrdersProduct;
import com.fau.fm.util.Page;

/**
 * @desc 订单对账、回款接口
 * @author dangjh
 * @datetime 2014年11月21日,下午3:50:02
 */
public interface ICheckingManagerService {

	/**
	 * @desc 待认领订单列表——数据展示
	 * @param map
	 * @param order
	 * @param admin
	 * @return Page
	 * @author dangjh
	 * @datetime 2014年11月21日,下午3:51:57
	 */
	public Page findAllFinancialByPage(Map<String, Object> map, MedicalFinancialOrders order, MedicalAdmin admin);
	
	/**
	 * @desc 待认领订单列表-订单认领
	 * @return boolean
	 * @author dangjh
	 * @datetime 2014年11月21日,下午3:58:16
	 */
	public boolean save(MedicalFinancialClaim order, MedicalAdmin admin);

	/**
	 * @desc 待认领订单列表-对账
	 * @param order
	 * @return boolean
	 * @author dangjh
	 * @datetime 2014年12月7日 下午5:09:09
	 */
	public boolean updateWaitClaim(MedicalFinancialClaim order);
	
	/**
	 * @desc 我的待对账订单列表——数据展示
	 * @param map
	 * @param order
	 * @param admin
	 * @return Page
	 * @author dangjh
	 * @datetime 2014年11月23日,下午1:35:18
	 */
	public Page findAllOrderClaim(Map<String, Object> map, MedicalFinancialClaim claim, MedicalAdmin admin);
	
	/**
	 * @desc 我的待对账订单列表-对账
	 * @param order
	 * @return boolean
	 * @author dangjh
	 * @datetime 2014年11月21日,下午11:44:42
	 */
	public boolean update(MedicalFinancialClaim order);
	
	/**
	 * @desc 我的已对账订单列表
	 * @param map
	 * @param order
	 * @param admin
	 * @return Page
	 * @author dangjh
	 * @datetime 2014年11月23日,下午1:35:18
	 */
	public Page findAllOrderReconciliation(Map<String, Object> map, MedicalFinancialClaim order, MedicalAdmin admin);
	
	/**========================================================================================================================*/
	/**
	 * @desc 待认领订单列表(回款)
	 * @param map
	 * @param order
	 * @param admin
	 * @return Page
	 * @author dangjh
	 * @datetime 2014年11月21日,下午3:51:57
	 */
	public Page findAllReconByPage(Map<String, Object> map, MedicalFinancialOrders order, MedicalAdmin admin);
	
	/**
	 * @desc 待回款-订单认领
	 * @return boolean
	 * @author dangjh
	 * @datetime 2014年11月21日,下午3:58:16
	 */
	public boolean saveRecon(MedicalOrderReconClaim order, MedicalAdmin admin);

	/**
	 * @desc 待回款-订单回款
	 * @param order
	 * @param admin
	 * @return boolean
	 * @author dangjh
	 * @datetime 2014年12月7日 下午6:56:27
	 */
	public boolean saveWaitRecon(MedicalOrderReconClaim order, MedicalAdmin admin);
	
	/**
	 * @desc 我的待回款订单列表
	 * @param map
	 * @param order
	 * @param admin
	 * @return Page
	 * @author dangjh
	 * @datetime 2014年11月23日,下午1:35:18
	 */
	public Page findAllOrderReconClaim(Map<String, Object> map, MedicalOrderReconClaim claim, MedicalAdmin admin);
	
	/**
	 * @desc 我的待回款订单-回款
	 * @param order
	 * @return boolean
	 * @author dangjh
	 * @datetime 2014年11月21日,下午11:44:42
	 */
	public boolean updateRecon(MedicalOrderReconClaim order);
	
	/**
	 * @desc 我的已回款订单列表
	 * @param map
	 * @param order
	 * @param admin
	 * @return Page
	 * @author dangjh
	 * @datetime 2014年11月23日,下午1:35:18
	 */
	public Page findAllOrderBackSection(Map<String, Object> map, MedicalOrderReconClaim order, MedicalAdmin admin);
	
	/**
	 * @desc 导出已选已对账订单信息
	 * @param order
	 * @return Workbook
	 * @author dangjh
	 * @datetime 2014年11月24日,下午7:33:21
	 */
	public Workbook selectedPage(MedicalFinancialClaim order) throws Exception ;
	
	/**
	 * @desc 导出所有已对账订单信息
	 * @param order
	 * @return Workbook
	 * @author dangjh
	 * @datetime 2014年11月24日,下午7:34:44
	 */
	public Workbook allPage(MedicalFinancialClaim order) throws Exception ;
	
	/**
	 * @desc 导出已选已回款订单信息
	 * @param order
	 * @return Workbook
	 * @author dangjh
	 * @datetime 2014年11月24日,下午7:33:21
	 */
	public Workbook selectedPage(MedicalOrderReconClaim order) throws Exception ;
	
	/**
	 * @desc 导出所有已回款订单信息
	 * @param order
	 * @return Workbook
	 * @author dangjh
	 * @datetime 2014年11月24日,下午7:34:44
	 */
	public Workbook allPage(MedicalOrderReconClaim order) throws Exception ;
	
	/**
	 * @desc 查询订单信息
	 * @param id
	 * @return MedicalOrdersInfo
	 * @author dangjh
	 * @datetime 2014年12月2日 上午10:09:13
	 */
	public MedicalOrdersInfo findById(MedicalAdmin admin, String id);
	
	/**
	 * @desc 根据订单id查询订单对应的产品
	 * @param orderId
	 * @return List<MedicalOrdersProduct>
	 * @author dangjh
	 * @datetime 2014年12月4日 上午9:49:42
	 */
	public List<MedicalOrdersProduct> findByOrderId(String orderId);
	
	/**-----------------------------------------------------------------------------------------------------------------------------------
	 * @desc 货到付款——导入对账(包含待对账、我的待对账)
	 * @param admin
	 * @param file
	 * @return String
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月17日 下午11:28:22
	 */
	public String importDelivery(MedicalAdmin admin, File file, String type) throws Exception;
	
	/**
	 * @desc 线下汇款——导入对账(包含待对账、我的待对账)
	 * @param admin
	 * @param file
	 * @return String
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月17日 下午11:28:22
	 */
	public String importLineDelivery(MedicalAdmin admin, File file, String type) throws Exception;
	
	/**
	 * @desc 货到付款——导入回款(包含待回款、我的待回款)
	 * @param admin
	 * @param file
	 * @return String
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月17日 下午11:28:57
	 */
	public String importReconDelivery(MedicalAdmin admin, File file, String type) throws Exception;
	
	/**
	 * @desc 线下汇款——导入回款(包含待回款、我的待回款)
	 * @param admin
	 * @param file
	 * @return String
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月17日 下午11:28:57
	 */
	public String importLineReconDelivery(MedicalAdmin admin, File file, String type) throws Exception;
	
	/**
	 * @desc 查找订单操作记录
	 * @return list
	 * @author dangjh
	 * 2015年1月12日 下午8:34:57
	 */
	public List<MedicalOrdersLog> findAllOrdersLog(String eid, String orderNo);
	
}
